﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BuildPlannerLib.Buildings
{
    // Abstract class for all buildings
    public abstract class Building
    {
        // String property for the building name
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }

        // Integer properties for the cost of the building
        private int mineralCost;
        private int gasCost;
        private int timeDuration;
        public int MineralCost
        {
            get { return mineralCost; }
            set { mineralCost = value; }
        }
        public int GasCost
        {
            get { return gasCost; }
            set { gasCost = value; }
        }
        public int TimeDuration
        {
            get { return timeDuration; }
            set { timeDuration = value; }
        }

        // Integer property for the supply produced by the building
        private int supplyProduced;
        public int SupplyProduced
        {
            get { return supplyProduced; }
            set { supplyProduced = value; }
        }

        // String property for the required building
        private string requirement;
        public string Requirement
        {
            get { return requirement; }
            set { requirement = value; }
        }

        // Integer property for whether a building of this type has been started
        private int started;
        public int Started
        {
            get { return started; }
            set { started = value; }
        }

        // Abstract method for getting a number buildings that exist
        public abstract int GetCount();

        // Abstract method for adding a new building
        public abstract void AddBuilding();

        // Abstract method for resetting to the start of simulation
        public abstract void Reset();
    }
}
